unit proyectos;

interface

uses classes, sitios, enlaces, redes, JclIniFiles, Vcl.Dialogs, sysutils;

type
  TProyectoPTP = class { enlace simples PTP }
  private
    FVersion: string;
    FNombre: string;
    FListadoEnlaces: TEnlaces;
    FListadoSitios: TSitios;
    FDescripcion: string;
    FListadoRedes: tredes;
    procedure SetNombre(const Value: string);
    procedure SetVersion(const Value: string);
    procedure SetListadoEnlaces(const Value: TEnlaces);
    procedure SetListadoSitios(const Value: TSitios);
    procedure SetDescripcion(const Value: string);
    procedure SetListadoRedes(const Value: tredes);
    procedure GuardarComo(NombreArchivo: string);
  public
    constructor create; overload;
    property Nombre: string read FNombre write SetNombre;
    property Version: string read FVersion write SetVersion;
    property Descripcion: string read FDescripcion write SetDescripcion;
    property ListadoSitios: TSitios read FListadoSitios write SetListadoSitios;
    property ListadoEnlaces: TEnlaces read FListadoEnlaces
      write SetListadoEnlaces;
    procedure AddSitioDlg;
    procedure AddEnlaceDlg;
    property ListadoRedes: tredes read FListadoRedes write SetListadoRedes;

    procedure Guardar;

  end;

implementation

uses
  ufrmnuevositio;

{ TProyecto }

procedure TProyectoPTP.AddEnlaceDlg;
begin
  { dialog del enlace }

end;

procedure TProyectoPTP.AddSitioDlg;
var
  s: TSitio;
begin
  { dialogo del sitio }
  frmnuevositio := TfrmNuevoSitio.create(nil);
  if frmnuevositio.ShowModal = 1 then
  begin
    { agregar nuevo sitio }
    s := TSitio.create;

    with s do
    begin
      Nombre := frmnuevositio.edt1.Text;
      Latitud := 0;
      Longitud := 0;
      Altitud := 0;
      ListadoSitios.Add(Pointer(s));
    end;

  end;
  frmnuevositio.Free;

end;

/// <summary>  Crear nueva instancia del proyecto tipo PTP</summary>
constructor TProyectoPTP.create;
begin

  Nombre := 'Nuevo proyecto';
  ListadoSitios := TSitios.create;
  ListadoEnlaces := TEnlaces.create;
  ListadoRedes := tredes.create;
  Descripcion := 'Descripcion del nuevo proyecto';

end;

procedure TProyectoPTP.Guardar;
var
  dlg: tsavedialog;
begin

  dlg := tsavedialog.create(nil);
  dlg.Title := 'Guardar proyecto como';
  dlg.Filter := 'Proyecto PTP LinkMaster|*.mstptp';
  if dlg.Execute then
  begin
    GuardarComo(ChangeFileExt(dlg.FileName, '.mstptp'));
  end;
  dlg.Free;

end;

procedure TProyectoPTP.GuardarComo(NombreArchivo: string);
var
  i: Integer;
begin

  for i := 0 to ListadoRedes.Count - 1 do
  begin
    JclIniFiles.IniWriteString(NombreArchivo, 'redes', 'red' + inttostr(i),
      TRed(ListadoRedes.Items[i]).Nombre);
  end;

  for i := 0 to ListadoSitios.Count - 1 do
  begin
    JclIniFiles.IniWriteString(NombreArchivo, 'sitios', 'sitio' + inttostr(i),
      TSitio(ListadoSitios.Items[i]).Nombre);

  end;

  for i := 0 to ListadoEnlaces.Count - 1 do
  begin
    JclIniFiles.IniWriteString(NombreArchivo, 'enlaces', 'enlace' + inttostr(i),
      TEnlace(ListadoEnlaces.Items[i]).Nombre);
  end;

  JclIniFiles.IniWriteString(NombreArchivo, 'proyecto', 'nombre', self.Nombre);
  JclIniFiles.IniWriteString(NombreArchivo, 'proyecto', 'version',
    self.Version);

end;

procedure TProyectoPTP.SetDescripcion(const Value: string);
begin
  FDescripcion := Value;
end;

procedure TProyectoPTP.SetListadoEnlaces(const Value: TEnlaces);
begin
  FListadoEnlaces := Value;
end;

procedure TProyectoPTP.SetListadoRedes(const Value: tredes);
begin
  FListadoRedes := Value;
end;

procedure TProyectoPTP.SetListadoSitios(const Value: TSitios);
begin
  FListadoSitios := Value;
end;

procedure TProyectoPTP.SetNombre(const Value: string);
begin
  FNombre := Value;
end;

procedure TProyectoPTP.SetVersion(const Value: string);
begin
  FVersion := Value;
end;

end.
